$fn=100; dis=35; hei=20; scr1=0; scr2=0; module base_holder() { union() { difference() { union(){ hull() { translate([-4,-4,-0])cube([1,8,5]); translate([12.5-13-19.8,-7.5,-0])cube([0.0001,15,5]); } translate([0,0,0])scale([3.3,2.75,0.5])cylinder(d=12,h=10); } translate([7,-18,-1])cube([15,36,10]); translate([0,0,-1])scale([3.3,2.75,0.5])cylinder(d=10,h=14); } translate([7,13.93,0])cylinder(h=5,d=2.95); translate([7,-13.93,0])cylinder(h=5,d=2.95); } } union() { for (i=[0:3]) { translate([0,dis*i,0]) base_holder(); }; translate([-.5,0,0]) difference() { translate([-23,-7.5,0])cube([3.5,dis*3+15,5]) ; translate([-23.5,dis*0.5,2.5])rotate([0,90,0])cylinder(h=10,d=scr1); translate([-20.4,dis*0.5,2.5])rotate([0,90,0])cylinder(h=1,d1=4,d2=scr2); translate([-23.5,dis*2.5,2.5])rotate([0,90,0])cylinder(h=4,d=scr1); translate([-20.4,dis*2.5,2.5])rotate([0,90,0])cylinder(h=1,d1=4,d2=scr2); } }; //p2 union() { translate([-0.5,0,hei]) union() { translate([0,0,0]) difference() { union(){ hull() { translate([-4,-4,-0])cube([1,8,5]); translate([12.5-13-19.8,-7.5,-0])cube([0.0001,15,5]); } translate([0,0,0])cylinder(h=5,d=10); } hull() { translate([0,0,-1])cylinder(h=7,d=8); translate([1,0,-1])cylinder(h=7,d=7.5); } translate([2,-18,-1])cube([15,36,10]); }; translate([0,dis,0]) difference() { union(){ hull() { translate([-4,-4,-0])cube([1,8,5]); translate([12.5-13-19.8,-7.5,-0])cube([0.0001,15,5]); } translate([0,0,0])cylinder(h=5,d=10); } hull() { translate([0,0,-1])cylinder(h=7,d=8); translate([1,0,-1])cylinder(h=7,d=7.5); } translate([2,-18,-1])cube([15,36,10]); }; translate([0,dis*2,0]) difference() { union(){ hull() { translate([-4,-4,-0])cube([1,8,5]); translate([12.5-13-19.8,-7.5,-0])cube([0.0001,15,5]); } translate([0,0,0])cylinder(h=5,d=10); } hull() { translate([0,0,-1])cylinder(h=7,d=8); translate([1,0,-1])cylinder(h=7,d=7.5); } translate([2,-18,-1])cube([15,36,10]); }; translate([0,dis*3,0]) difference() { union(){ hull() { translate([-4,-4,-0])cube([1,8,5]); translate([12.5-13-19.8,-7.5,-0])cube([0.0001,15,5]); } translate([0,0,0])cylinder(h=5,d=10); } hull() { translate([0,0,-1])cylinder(h=7,d=8); translate([1,0,-1])cylinder(h=7,d=7.5); } translate([2,-18,-1])cube([15,36,10]); }; difference() { translate([-23,-7.5,0])cube([3,dis*3+15,5]) ; translate([-23.5,dis*0.5,2.5])rotate([0,90,0])cylinder(h=10,d=scr1); translate([-20.9,dis*0.5,2.5])rotate([0,90,0])cylinder(h=1,d1=4,d2=scr2); translate([-23.5,dis*2.5,2.5])rotate([0,90,0])cylinder(h=4,d=scr1); translate([-20.9,dis*2.5,2.5])rotate([0,90,0])cylinder(h=1,d1=scr1,d2=scr2); }; }; };